home *** CD-ROM | disk | FTP | other *** search
- //: C23:Except.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Basic exceptions
- // Exception specifications & unexpected()
- #include <exception>
- #include <iostream>
- #include <cstdlib>
- #include <cstring>
- using namespace std;
-
- class Up {};
- class Fit {};
- void g();
-
- void f(int i) throw (Up, Fit) {
- switch(i) {
- case 1: throw Up();
- case 2: throw Fit();
- }
- g();
- }
-
- // void g() {} // Version 1
- void g() { throw 47; } // Version 2
- // (Can throw built-in types)
-
- void my_unexpected() {
- cout << "unexpected exception thrown";
- exit(1);
- }
-
- int main() {
- set_unexpected(my_unexpected);
- // (ignores return value)
- for(int i = 1; i <=3; i++)
- try {
- f(i);
- } catch(Up) {
- cout << "Up caught" << endl;
- } catch(Fit) {
- cout << "Fit caught" << endl;
- }
- } ///:~
-